
OPENCL_STD	:=	-cl-std=CL1.2
OPENCL_PRE	:=	__OPENCL_C_VERSION__=120

IOC_IR_OPTS_OPT	:=	$(OPENCL_STD) -cl-single-precision-constant -cl-denorms-are-zero \
			-cl-mad-enable -cl-no-signed-zeros -cl-fast-relaxed-math -cl-kernel-arg-info

TARGETS		:=	hs_kernels.src.xxd hs_kernels.src.len.xxd hs_kernels.bin.xxd hs_kernels.bin.len.xxd hs_target.bin

all:			$(TARGETS)

clean:
			rm $(TARGETS) hs_kernels.pre.cl hs_kernels.bin

hs_target.bin:		hs_kernels.bin
			gcc -D HS_DUMP -x c hs_target.h -o hs_dump
			hs_dump

hs_kernels.bin.len.xxd:	hs_kernels.bin
			$(shell bytes=$$(wc -c < $<); printf "%.8x" $$bytes | xxd -r -p | xxd -i 1> $@)

hs_kernels.bin.xxd:	hs_kernels.bin
			$(shell xxd -i < $< 1> $@)

hs_kernels.bin:		hs_kernels.pre.cl
			ioc64 -cmd=build -bo="$(IOC_IR_OPTS_OPT)" -device=gpu -input=$< -ir=$@

hs_kernels.src.len.xxd:	hs_kernels.pre.cl
			$(shell bytes=$$(wc -c < $<); printf "%.8x" $$bytes | xxd -r -p | xxd -i 1> $@)

hs_kernels.src.xxd:		hs_kernels.pre.cl
			$(shell xxd -i < $< 1> $@)

hs_kernels.pre.cl:	hs_kernels.cl
			gcc -x c -E -P -I . -D $(OPENCL_PRE) $< -o $@
